home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Palettes / ScrollViewDeluxe / SVDInspector.m < prev   
Text File  |  1993-11-01  |  5KB  |  169 lines

  1. #import "SVDInspector.h"
  2. #import "ScrollViewDeluxe.h"
  3.  
  4.  
  5. typedef struct { @defs (ScrollView) } *scrollViewId;
  6.  
  7. typedef struct { @defs (Scroller) } *scrollerId;
  8.  
  9. #define NONE    0
  10. #define LINE    1
  11. #define    BEZEL    2
  12. #define    RIDGE    3
  13.  
  14. #define VERTIC    0
  15. #define HORIZ    1
  16.  
  17.  
  18. #define BLACK    0
  19. #define DKGRAY    1
  20. #define LTGRAY    2
  21. #define WHITE    3
  22.  
  23. @implementation SVDInspector
  24.  
  25. - init
  26. {
  27.     char path[MAXPATHLEN];
  28.     NXBundle    *bundle = [NXBundle bundleForClass:[self class]];
  29.  
  30.     [super init];
  31.     [bundle getPath:path forResource:"SVDInspector"
  32.         ofType:"nib"];
  33.     [NXApp loadNibFile:path owner:self withNames:NO];
  34.     return self;
  35. }
  36.  
  37. - (BOOL)wantsButtons { return NO; }
  38.  
  39. - revert:sender
  40. {
  41.     int        i=0;
  42.     id        scroller;
  43.     float    gray;
  44.     
  45.     scroller = [object vertScroller];
  46.     if (!scroller) scroller = [object horizScroller];
  47.     switch ([object borderType]) {
  48.         case NX_NONE:
  49.     i = NONE;
  50.     break;
  51.         case NX_LINE:
  52.     i = LINE;
  53.     break;
  54.         case NX_BEZEL:
  55.     i = BEZEL;
  56.     break;
  57.         case NX_RIDGE:
  58.     i = RIDGE;
  59.     break;
  60.     }
  61.     [borderMatrix selectCellWithTag:i];
  62.     gray = [object backgroundGray];
  63.     i = ((gray == NX_BLACK)? 0 : ((gray < 0.5) ? 1 : ((gray < 0.8) ? 2 : 3)));
  64.     [backGrayMatrix selectCellWithTag:i];
  65.     if (((scrollViewId) object)->_sFlags.vScrollerRequired) 
  66.         [[scrollerMatrix findCellWithTag:VERTIC] setIntValue:1];
  67.     else [[scrollerMatrix findCellWithTag:VERTIC] setIntValue:0];
  68.     if (((scrollViewId) object)->_sFlags.hScrollerRequired) 
  69.         [[scrollerMatrix findCellWithTag:HORIZ] setIntValue:1];
  70.     else [[scrollerMatrix findCellWithTag:HORIZ] setIntValue:0];
  71.     [lineCell setFloatValue:((scrollViewId) object)->lineAmount];
  72.     [pageCell setFloatValue:((scrollViewId) object)->pageContext];
  73.  
  74.     [pageUpDownSwitch setState:[object pageUpDownButtonsVisible]];
  75.     [pageLeftRightSwitch setState:[object pageLeftRightButtonsVisible]];
  76.     [zoomSwitch setState:[object zoomButtonVisible]];
  77.     [topRulerSwitch setState:[object topViewVisible]];
  78.     [leftRulerSwitch setState:[object leftViewVisible]];
  79.     [deluxeMatrix display];
  80.     return [super revert:sender];
  81. }
  82.  
  83. - ok:sender
  84. {
  85.     int    i=0;
  86.     float gray= 0.0;
  87.     switch ([borderMatrix selectedTag]) {
  88.         case NONE:
  89.     i = NX_NONE;
  90.     break;
  91.         case LINE:
  92.     i = NX_LINE;
  93.     break;
  94.         case BEZEL:
  95.     i = NX_BEZEL;
  96.     break;
  97.         case RIDGE:
  98.     i = NX_RIDGE;
  99.     break;
  100.     }
  101.     [object setBorderType:i];
  102.     switch ([backGrayMatrix selectedTag]) {
  103.         case 0:
  104.     gray = NX_BLACK;
  105.     break;
  106.         case 1:
  107.     gray = NX_DKGRAY;
  108.     break;
  109.         case 2:
  110.     gray = NX_LTGRAY;
  111.     break;
  112.         case 3:
  113.     gray = NX_WHITE;
  114.     break;
  115.     }
  116.     [object setBackgroundGray:gray];
  117.     [object setVertScrollerRequired:
  118.             [[scrollerMatrix findCellWithTag:VERTIC] intValue]];
  119.     [object setHorizScrollerRequired:
  120.             [[scrollerMatrix findCellWithTag:HORIZ] intValue]];
  121.     if ([lineCell floatValue] < 1.0) [lineCell setFloatValue:1.0];
  122.     [lineCell setFloatValue:ceil([lineCell floatValue])];
  123.     ((scrollViewId) object)->lineAmount = [lineCell floatValue];
  124.     if ([pageCell floatValue] < 1.0) [pageCell setFloatValue:1.0];
  125.     [pageCell setFloatValue:ceil([pageCell floatValue])];
  126.     ((scrollViewId) object)->pageContext = [pageCell floatValue];
  127.     [object setPageLeftRightButtonsVisible:[pageLeftRightSwitch state]];
  128.     [object setPageUpDownButtonsVisible:[pageUpDownSwitch state]];
  129.     [object setZoomButtonVisible:[zoomSwitch state]];
  130.     [object setTopViewVisible:[topRulerSwitch state]];
  131.     [object setLeftViewVisible:[leftRulerSwitch state]];
  132.     return [super ok:sender];
  133. }
  134.  
  135. @end
  136.  
  137. @interface Menu(attachedMenu)
  138. @end
  139. @implementation Menu(attachedMenu)
  140. - attachedMenu { return attachedMenu; }
  141. @end
  142.  
  143. @implementation ScrollView(Replace)
  144.  
  145. extern id (*_zoneAlloc)(Class aClass, unsigned int indIvarBytes, NXZone *zone);
  146. static id (*oldAlloc)(Class aClass, unsigned int indIvarBytes, NXZone *zone);
  147. id SVDAlloc(Class aClass, unsigned int indIvarBytes, NXZone *zone)
  148. {
  149.     if(aClass == [ScrollView class]) {
  150.         id menuMatrix =[[[[NXApp mainMenu] attachedMenu] attachedMenu] 
  151.             itemList];
  152.         id menuCell = [menuMatrix selectedCell];
  153.     
  154.         // If menu cell exists, is enabled & has the correct title, use Deluxe
  155.         if(([NXApp currentEvent]->flags&NX_COMMANDMASK) && menuCell && 
  156.             [menuCell isEnabled] && ([menuMatrix selectedRow] == 5))
  157.                 return oldAlloc([ScrollViewDeluxe class], indIvarBytes, zone);
  158.     }
  159.     return oldAlloc(aClass, indIvarBytes, zone);
  160. }    
  161.  
  162. + finishLoading:(struct mach_header *)header
  163. {
  164.     oldAlloc = _zoneAlloc;
  165.     _zoneAlloc = SVDAlloc;
  166.     return self;
  167. }
  168.  
  169. @end